package com.qqtech.qquan.mall.service;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import com.qqtech.core.frame.service.BaseService;
import com.qqtech.qquan.mall.model.*;

public interface MallShopCategoryService extends BaseService<MallShopCategory> {
	/**
	 * 根据categoryId查询
	 * @param categoryId
	 * @return
	 */
	public MallShopCategoryVo getByCategoryId(java.lang.String categoryId);
	
	/**
	 * 获取子级的oidx排序最大值
	 * @param parentId 上级id
	 * @return
	 */
	public Integer getMaxOidxByParentId(String parentId);
	
	/**
	 * 根据上级获取列表
	 * @param parentId 当parentId==null或者0时,返回一级类目
	 * @param status 状态,当status==null时,返回所有状态的
	 * @return
	 */
	public List<MallShopCategoryVo> queryListByParentId(String parentId,Integer status);
	
	/**
	 * 根据上级获取列表
	 * @param parentId 当parentId==null或者0时,返回一级类目
	 * @param status 状态,当status==null时,返回所有状态的
	 * @param type 种类,当type==null时,返回所有的种类
	 * @return
	 */
	public List<MallShopCategoryVo> queryListByParentId(String parentId,Integer status, Integer type);
	
	/**
	 * 根据上级获取列表(缓存查询)
	 * @param parentId 当parentId==null或者0时,返回一级类目
	 * @param status 状态,当status==null时,返回所有状态的
	 * @return
	 */
	public List<MallShopCategoryVo> queryListByParentIdCache(String parentId);
	
	/**
	 * 获取categoryId的所有上级分类
	 * @param categoryId
	 * @return
	 */
	public List<MallShopCategoryVo> findAllParent(String categoryId);
	
	/**
	 * 更新
	 * @param entity
	 * @return
	 */
	public int updateByCategoryId(MallShopCategory entity);
	
	/**
	 * 后台查询列表
	 * @param query
	 * @param pageable
	 * @return
	 */
	public Page<MallShopCategoryVo> queryPageListAdmin(MallShopCategory query, Pageable pageable);
	
	/**
	 * 查询正在被店铺使用的一级分类
	 * @param communityId 社区id
	 * @param style 店铺种类:1-邻里店,2-社区店铺
	 * @return
	 */
	public List<MallShopCategoryVo> findParentByShop(Integer communityId, Integer style);
}